i = {
    utf8: {
        stringToBytes: function(e) {
            return i.bin.stringToBytes(unescape(encodeURIComponent(e)))
        },
        bytesToString: function(e) {
            return decodeURIComponent(escape(i.bin.bytesToString(e)))
        }
    },
    bin: {
        stringToBytes: function(e) {
            for (var t = [], n = 0; n < e.length; n++)
                t.push(255 & e.charCodeAt(n));
            return t
        },
        bytesToString: function(e) {
            for (var t = [], n = 0; n < e.length; n++)
                t.push(String.fromCharCode(e[n]));
            return t.join("")
        }
    }
}
l = function(e) {
    // e.constructor == String ? e = i.utf8.stringToBytes(e) : "undefined" !== typeof t && "function" == typeof t.isBuffer && t.isBuffer(e) ? e = Array.prototype.slice.call(e, 0) : Array.isArray(e) || (e = e.toString());
    tt = stringToBytes(e)
    e.constructor == String ? e = tt : "undefined" !== typeof t && "function" == typeof t.isBuffer && t.isBuffer(e) ? e = Array.prototype.slice.call(e, 0) : Array.isArray(e) || (e = e.toString());
    var o = bytesToWords(e)
      , i = 8 * e.length
      , a = []
      , l = 1732584193
      , u = -271733879
      , c = -1732584194
      , s = 271733878
      , f = -1009589776;
    o[i >> 5] |= 128 << 24 - i % 32,
    o[15 + (i + 64 >>> 9 << 4)] = i;
    for (var d = 0; d < o.length; d += 16) {
        for (var p = l, y = u, h = c, b = s, v = f, m = 0; m < 80; m++) {
            if (m < 16)
                a[m] = o[d + m];
            else {
                var g = a[m - 3] ^ a[m - 8] ^ a[m - 14] ^ a[m - 16];
                a[m] = g << 1 | g >>> 31
            }
            var k = (l << 5 | l >>> 27) + f + (a[m] >>> 0) + (m < 20 ? 1518500249 + (u & c | ~u & s) : m < 40 ? 1859775393 + (u ^ c ^ s) : m < 60 ? (u & c | u & s | c & s) - 1894007588 : (u ^ c ^ s) - 899497514);
            f = s,
            s = c,
            c = u << 30 | u >>> 2,
            u = l,
            l = k
        }
        l += p,
        u += y,
        c += h,
        s += b,
        f += v
    }
    return [l, u, c, s, f]
}
function wordsToBytes(e) {
    for (var t = [], n = 0; n < 32 * e.length; n +=8) t.push(e[n>>> 5] >>> 24 - n % 32 & 255);
        return t
    }
function bytesToHex(e) {
    for (var t = [], n = 0; n < e.length; n++) t.push((e[n]>>> 4).toString(16)),
        t.push((15 & e[n]).toString(16));
        return t.join("")
    }
function bytesToString(e) {
    for (var t = [], n = 0; n < e.length; n++)
        t.push(String.fromCharCode(e[n]));
    return t.join("")
}
function bytesToWords(e) {
    for (var t = [], n = 0, r = 0; n < e.length; n++,
        r += 8)
        t[r >>> 5] |= e[n] << 24 - r % 32;
    return t
}
u = function(e, t) {
    var r = wordsToBytes(l(e));
    return t && t.asBytes ? r : t && t.asString ? bytesToString(r) : bytesToHex(r)
}
function stringToBytes(e) {
    e = unescape(encodeURIComponent(e))
    for (var t = [], n = 0; n < e.length; n++)
        t.push(255 & e.charCodeAt(n));
    return t
}
function u1() {
    for (var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 8, t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "alphabet", n = "", r = {
        alphabet: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",
        number: "0123456789"
    }[t], o = 0; o < e; o++)
        n += r.charAt(Math.floor(Math.random() * r.length));
    return n
}
